import os
import shutil

def find_and_copy_unmatched_files(dir_a, dir_b, dir_c):
    # 获取 A 和 B 文件夹中的文件名列表
    files_a = set(os.listdir(dir_a))
    files_b = os.listdir(dir_b)

    # 确保目标目录存在
    os.makedirs(dir_c, exist_ok=True)

    unmatched_files = []

    for file_b in files_b:
        # 构造 A 中应有的对应文件名（加上 detect_ 前缀）
        expected_in_a = "detect_" + file_b
        if expected_in_a not in files_a:
            unmatched_files.append(file_b)

    # 复制未匹配的文件到 C 目录
    for file_name in unmatched_files:
        src_path = os.path.join(dir_b, file_name)
        dst_path = os.path.join(dir_c, file_name)
        shutil.copy2(src_path, dst_path)
        print(f"Copied: {file_name}")

    print(f"\nTotal unmatched files copied: {len(unmatched_files)}")

# 使用示例
if __name__ == "__main__":
    dir_a = r"D:\TestPic\公司未戴头盔软件测试\20250916测试\33模型-v8m-重命名"          # A 文件夹路径 detect_ 前缀
    dir_b = r"D:\TestPic\公司未戴头盔软件测试\20250916测试\pic0916-去重复"          # B 文件夹路径
    dir_c = r"D:\TestPic\公司未戴头盔软件测试\20250916测试\33模型-v8m-重命名-未检测图片"          # 输出目录 C

    find_and_copy_unmatched_files(dir_a, dir_b, dir_c)